package org.luxor.commons.storage.client;

import java.io.InputStream;

/**
 * 支持断点续传的文件存储服务
 *
 * @author Mr.yan @date 2019/12/15
 */
public abstract class AbstractAppendStorageClient extends AbstractStorageClient {

    /**
     * 上传支持断点续传的文件
     *
     * @param inputStream 文件流
     * @param fileSize    文件大小(KB)
     * @param fileExtName 文件后缀
     * @return fileFullPath    文件路径
     */
    public abstract String appendUpload(InputStream inputStream, long fileSize, String fileExtName);

    /**
     * 断点续传文件
     *
     * @param fileFullPath 文件路径
     * @param inputStream  文件流
     * @param fileSize     文件大小(KB)
     */
    public abstract void appendFile(String fileFullPath, InputStream inputStream, long fileSize);

    /**
     * 分段下载
     *
     * @param fileFullPath 文件路径
     * @param fileOffset   文件偏移位置
     * @param fileSize     文件大小(KB)
     * @return
     */
    public abstract byte[] appendDownload(String fileFullPath, long fileOffset, long fileSize);
}
